This invention relates generally to computer software and more particularly to software designed to test application programs.
A digital computer system includes both hardware and software. The hardware includes the physical portions of the computer system such as the central processing unit (CPU), memory, input/output (I/O) ports and peripherals. The software portion of the system comprises a sequence of instructions stored in memory which direct and control the operation of the hardware.
The computer system's software includes both system and application software. The system software, often referred to as the "operating system", interacts directly with the hardware of the computer system to perform such functions as storing data to memory, inputting and outputting data and manipulating the registers of the CPU. Application software interfaces with system software and typically performs user-specific applications such as spreadsheet analysis, word processing and computer aided design (CAD).
A problem encountered by application software developers is that application software developed to work with a particular operating system will almost certainly not work with other operating systems, even if these alternative operating systems are closely related an operate on similar hardware platforms. Application software developers therefore tend to write application programs for the most common operating systems to maximize the potential size of their market. After application software has been developed for a particular operating system it may, with varying degrees of effort, be modified or "ported" to run on other operating systems.
Another problem encountered by software developers is that hardware from different vendors tends to be different in architecture even if they are using the same operating system. Since many application software developers bypass the operating system to increase system performance, their application software may not run on all hardware platforms which support the operating system. In these circumstances software developers have several choices: 1) they can choose not to bypass the operating system and accept lower performance of their application program; 2) bypass the operating system but only support the most common hardware platform; or 3) bypass the operating system and port the application program to support multiple hardware platforms.
There is a trend in the industry towards computer systems designed around open standards rather than proprietary standards. In proprietary standard systems the structure and operation of the computer system is owned and protected by a particular vendor with a combination of patents, trade secrets and copyrights. Proprietary system manufacturers tend not to license others to make systems which would compete with their own. Examples of proprietary systems include computer systems manufactured by Digital Equipment Corporation, Apple Computers, Inc. and Wang Laboratories. In open standard systems certain details concerning the structure and operation of the computer system are published and are typically made available free of charge or for a modest licensing fee. Examples of open standard systems include systems which use the MS-DOS operating system of Microsoft, Inc. or certain versions of the UNIX system from AT&T. In theory, application developers would rather produce application software for open standard systems than proprietary standard systems due to a potentially larger number of systems which could run their software. The advantage for hardware and operating system vendors in conforming their systems to open standards is that they will probably have a larger base of application software available to their customers and may therefore sell more of their hardware platforms and operating systems.
When a new computer architecture is developed it can be decided whether it should adhere to proprietary or open standards. For example, the relatively new reduced instruction set computer (RISC) processors available from such companies as Sun Microsystems, MIPS, AMD and Motorola can be designed into systems which operate under proprietary standards or can be designed into systems which operate under more open standards. The trend with RISC processors is to design them into systems which utilize some form of UNIX, making them compatible with other such systems at least at the UNIX source code level which is typically written in the language C. However, even computer systems having the same RISC processor and running under a version of UNIX are probably not compatible at the object module or binary code level due to incompatible uses of the processors registers, ports and memory interfaces. If a number of vendors wish to produce a truly open standard system, it is therefore necessary that they agree upon certain design and operating rules so that an application program which conforms to the same design and operating rules will run on all conforming systems.
A problem encountered with such an approach is how to ensure that an application program which is supposedly designed according to the standard rules will actually operate on systems provided by a number of manufacturers. For example, certain application programs written for the MS-DOS operating system will not work on some PC-clones because the hardware is not 100% compatible. As another example, some UNIX applications will work only with certain versions of the UNIX operating system. There is therefore a need in the software industry for procedures which can verify that application software developed in conformance with a set of accepted design rules will operate with computers and operating systems from any vendor which also adopts those design rules.